import { IContext, IParam } from '../../common';
import { IAppFunc } from './i-app-func-param';

/**
 * 应用功能辅助类
 */
export interface IAppFuncHelper {
	/**
	 * 执行应用功能
	 *
	 * @param {string} appFuncTag 应用功能
	 * @param {IContext} [context] 应用上下文
	 * @param {IParam} [viewParams] 视图参数
	 */
	execute(appFuncTag: string, context?: IContext, viewParams?: IParam): void;

	/**
	 * 打开视图
	 *
	 * @param {string} appFuncTag 应用功能
	 * @param {IContext} [context] 应用上下文
	 * @param {IParam} [viewParams] 视图参数
	 */
	openAppView(appFunc: IAppFunc, context: IContext, viewParams: IParam): void;

	/**
	 * 打开Html页面
	 *
	 * @param {string} appFuncTag 应用功能
	 * @param {IContext} [context] 应用上下文
	 * @param {IParam} [viewParams] 视图参数
	 */
	openHtmlPage(appFunc: IAppFunc, context: IContext, viewParams: IParam): void;

	/**
	 * 处理预制应用功能
	 *
	 * @param {string} appFuncTag 应用功能
	 * @param {IContext} [context] 应用上下文
	 * @param {IParam} [viewParams] 视图参数
	 */
	openPdAppFunc(appFunc: IAppFunc, context: IContext, viewParams: IParam): void;

	/**
	 * 执行JavaScript
	 *
	 * @param {string} appFuncTag 应用功能
	 * @param {IContext} [context] 应用上下文
	 * @param {IParam} [viewParams] 视图参数
	 */
	executeJavaScript(
		appFunc: IAppFunc,
		context: IContext,
		viewParams: IParam
	): void;

	/**
	 * 自定义
	 *
	 * @param {string} appFuncTag 应用功能
	 * @param {IContext} [context] 应用上下文
	 * @param {IParam} [viewParams] 视图参数
	 */
	executeCustom(appFunc: IAppFunc, context: IContext, viewParams: IParam): void;

	/**
	 * 执行界面行为
	 * @param {string} appFuncTag 应用功能
	 * @param {IContext} [context] 应用上下文
	 * @param {IParam} [viewParams] 视图参数
	 */
	executeAppUIAction(
		appFunc: IAppFunc,
		context: IContext,
		viewParams: IParam
	): void;
}
